踏み台サーバーを利用したプライベートなWebサーバ接続をやってみた
はじめに
こんにちは、かつまたです。
この記事では、AWSを使ってパブリックサブネット配置の踏み台サーバーとプライベートサブネット配置のWebサーバーを構築し、最終的にWebページを表示するまでの手順を2章に分けて、画像とともに説明していきます。具体的には以下の構造を構築しました。
1.踏み台サーバ編
1.1 VPC、サブネット作成
まず、VPCを作成します
1.AWSコンソールにログインし、「VPCを作成」をクリックします。
2.VPCの任意の名前(LT-katsumata-vpc)を入力し、IPv4 CIDRブロックを「10.0.0.0/16」に設定します。
3.「VPCを作成」をクリックします。
次にサブネットを作成します。
1.「サブネットを作成」をクリックします。
2.「VPC ID」に先ほど作成したVPCを選択します。
Public Subnet:
名前タグ: LT-katsumata-public1
IPv4 CIDRブロック: 10.0.0.0/24
Private Subnet:
名前タグ: LT-katsumata-private1
IPv4 CIDRブロック: 10.0.1.0/24
3.「サブネットを作成」をクリックします。
1.2 ゲートウェイ、ルートテーブル、セキュリティグループ作成
インターネットゲートウェイの作成
1.「インターネットゲートウェイ」を選択し、「インターネットゲートウェイを作成」をクリックします。
2.名前(LT-katsumata-igw)を入力し、作成します。
3.作成したインターネットゲートウェイを選択し、「アクション」→「VPCにアタッチ」を選択します。
4.先ほど作成したVPCを選択し、アタッチします。
NATゲートウェイの作成
1.「NATゲートウェイ」を選択し、「NATゲートウェイを作成」をクリックします。
2.名前(LT-katsumata-nat)を入力し、Publicサブネットを選択します。
3.Elastic IPを割り当て、NATゲートウェイを作成します。
ルートテーブルの作成
Public Subnet用のルートテーブルを作成
1.「ルートテーブルを作成」をクリックし、VPCを選択します。
2.名前タグ(LT-katsumata-rtb-public)を入力します。
3.「ルートの編集」→「ルートの追加」で送信先を「0.0.0.0/0」、ターゲットを「インターネットゲートウェイ」に設定します。
4.「サブネットの関連付け」の「サブネットの編集」でPublicサブネットを選択します。
Private Subnet用のルートテーブルを作成
1.Public Subnetと同様に作成します。
2.名前タグ(LT-katsumata-rtb-private)を入力します。
3.「ルートの編集」→「ルートの追加」で送信先を「0.0.0.0/0」、ターゲットを「NATゲートウェイ」に設定します。
4.「サブネットの関連付け」の「サブネットの編集」でPrivateサブネットを選択します。
セキュリティグループの作成
踏み台サーバー用セキュリティグループ:
・名前: LT-katsumata-sg-BustionInstance-public
・VPCを選択
・インバウンドルール: SSH (ポート 22) を許可(管理者のIPアドレスからのアクセスを許可)
Webサーバー用セキュリティグループ:
・名前: LT-katsumata-sg-private
・VPCを選択
・インバウンドルール: HTTP (ポート 80) およびSSH (ポート 22) を許可(踏み台サーバーからのアクセスを許可)
1.3 インスタンス作成
踏み台サーバー
名前: LT-katsumata-bustion-public
AMI: Amazon Linux 2
インスタンスタイプ: t2.micro
キーペア: キーペアを作成(LT-katsumata.pem)
Public Subnetを選択し、Elastic IPを有効にします。
セキュリティグループ: LT-katsumata-sg-BustionInstance-publicを選択します。
「起動」をクリックし、インスタンスを起動します。
Webサーバー
名前: LT-katsumata-web-private
AMI、インスタンスタイプ、キーペア: 踏み台と同じ
Private Subnetを選択し、Elastic IPを無効にします。
セキュリティグループ: LT-katsumata-sg-privateを選択します。
「起動」をクリックし、インスタンスを起動します。
1.4 踏み台サーバーからの接続
1.WebサーバーにSSHで接続するためのキーファイルを踏み台サーバーに転送します。
scp -i LT-katsumata.pem LT-katsumata.pem ec2-user@踏み台サーバーのパブリックIP:/home/ec2-user/
2.踏み台サーバーにSSHで接続します。
ssh -i "LT-katsumata.pem" ec2-user@踏み台サーバーのパブリックIP
3.踏み台サーバーからWebサーバーにSSH接続します。
ssh -i "LT-katsumata.pem" ec2-user@WebサーバーのプライベートIP
2.Webページ接続編
2.1 Apacheインストール
1.以下のコードを実行してApacheをインストールします。
sudo yum update -y
sudo yum install httpd -y
sudo systemctl start httpd
sudo systemctl enable httpd
2.2 ターゲットグループ作成
1.ターゲットは「インスタンス」を選択し、ターゲットグループ名(LT-katsumata-targetgroup)を入力します。
2.VPCを選択します。
3.ターゲットグループに追加するインスタンスとしてWebサーバのインスタンスを選択して作成します。
2.3 ALB作成
1.ALB作成前に別AZにpublicサブネットを作成します。
2.「ロードバランサーを作成」で「Application Load Balancer」を選択します。
3.名前(LT-katsumata-alb)を入力し、「インターネット向け」に設定します。
4.リスナー: HTTP (ポート 80)
5.VPCを選択し、アベイラビリティゾーンのpublicサブネットを選択します。
6.ALB用のセキュリティグループを選択します。
7.リスナーの設定でHTTPにおいて作成したターゲットグループを選択します。
2.4 Webページ
Webブラウザでhttp://[ALBのDNS名]を開き、Webサーバにホストされている作成したindex.htmlのサイトが閲覧できる状態か確認します。
終わりに
以上の操作で、踏み台サーバからWebサーバへの接続と、Webサーバ上のWebページ表示を確認することができました。
今回の構成の発展として
・サーバが単一のAZのみにあるため複数AZにインスタンス配置する
・データベースをAmazon RDSに移行し、マネージドデータベースを利用
・AutoScalingを用いてWebサーバーを負荷に合わせてスケーリングする構成を取る
・SSMとNATゲートウェイでよりコストとセキュリティを重視した構成
などが考えられるため、今後も手を動かして学習を続けて行きたいと考えています。
ご覧いただき、ありがとうございました。
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。